#     try 和 except 是必要元素，else 和 finally 可选择
# ============================================================================    异常的捕获方法
# 基本捕获语法（也是捕获全部异常）
try:
    f = open("E:excel学习文档-表格/abc.txt",'r',encoding = "UTF-8")
except:
    f = open("E:/excel学习文档-表格/abc.txt",'w',encoding = "UTF-8")

# 捕获指定异常
try:
    print(name)
except NameError as e:
    print("出现了变量未定义的异常")
    print(e)

# 捕获多个异常
try:
    1/0
    print(name)
except (NameError, ZeroDivisionError) as e:
    print("出现了变量未定义 或者除以0的异常错误")

# 捕获所有异常
try:
    f =open("E:/excel学习文档-表格/abc1.txt","r",encoding = "UTF-8")
    # print("hello")
except Exception as e:
    print("出现异常了")
    f = open("E:/excel学习文档-表格/abc1.txt", "w", encoding="UTF-8")      # --- 出现异常，对异常处理
else:
    print("没有异常")
finally:
    print("有没有异常，都执行")
    f.close()

# ============================================================================    异常的传递
def func1():                                # ----- func1的异常 -> func2 -> main()
    print("func1开始执行")
    num = 1 / 0
    print("func1结束执行")
def func2():
    print("func2开始执行")
    func1()
    print("func2结束执行")
def main():
    try:
        func2()
    except Exception as e:
        print(f"出现异常了，异常信息是{e}")
main()


# ============================================================================    python模块（New -> Python File)
# import 导入 time  模块使用 sleep 功能（函数）
import time                     # --- 导入python内置的time模块（time.py这个代码文件）
print("nihao")
time.sleep(5)
print("wohao")


# from   导入 time  的      sleep功能
from time import sleep
print("你好")
sleep(5)
print("我好")


# *      导入 time   的      全部功能
from time import *
print("你")
sleep(5)
print("我")
# as     给特定功能加别名
import time as t
print("1")
t.sleep(5)
print("2")

from time import sleep as s
print("3")
s(3)
print("5")
# --------------------------------------------------------------------  自定义模块(见my_module、 my_module2、 my_module3）
# 自定义my_module1.py文件，定义module函数并调用
from my_module2 import my_test
my_test(1,2)

# 添加测试信息,在my_test函数后加入test(1,2)
# __main__         (见my_module1)
# __all__          (见my_module3)
# from my_module import *
# test_a(1,3)
# test_b(5,2)
# ============================================================================    python包 （New -> Python Package）

# ============================================================================   安装第三方包
# 常用第三方包：
# 科学计算       numpy包
# 数据分析       pandas包
# 大数据计算      pyspark、apache-flink包
# 图形可视化      matplotlib、pyecharts包
# 人工智能       tensorflow包

# 安装：cmd -> pip install numpy   or
#      pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

# interpreter

# ========================================================  案例：自定义工具包(见 my_utils { str_util.py 、file_util )}
import my_utils.str_util
print(my_utils.str_util.str_reverse("黑马程序员"))
print(my_utils.str_util.substr("itheima", 0, 4))

from my_utils import file_util
file_util.print_file_info("E:/excel学习文档-表格/bill.txt")
file_util.append_to_file("E:/excel学习文档-表格/bill.txt", "zhangzhiguo")
